package com.social.socialservice.dal;

import com.social.socialservice.idal.IFansDAL;
import com.social.socialservice.model.UserInfo;
import com.social.socialservice.unit.Pager;
import com.social.socialservice.unit.PagerData;
import com.social.socialservice.unit.Response;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 粉丝用户数据实现层
 */
@Service
public class FansDAL {
    @Autowired
    IFansDAL iFansDAL;

    /******************************************************************
     * 根据用户id查询当前用户关注的用户分页数据
     */
    private List<UserInfo> getFoUserListMapperByUserId(Pager pager){
        Integer currentPage = pager.getCurrentPage();
        Integer startIndex = (currentPage-1)*pager.getPageSize();
        pager.setStartIndex(startIndex);
        return iFansDAL.getFoUserListMapperByUserId(pager);
    }

    /**
     * 根据用户id查询当前用户关注的用户分页数据
     * 计算分页counts
     */
    private Integer getFoUserListMapperCountsByUserId(Pager pager){
        return iFansDAL.getFoUserListMapperCountsByUserId(pager);
    }

    /**
     * 根据用户id查询当前用户关注的用户分页数据
     * 计算分页
     */
    private Integer getFoUserListMapperPageTotalByUserId(Pager pager){
        Integer userPostTotalCounts = getFoUserListMapperCountsByUserId(pager);
        Integer pageTotal = 1;
        //数据总条数除以pageSize，如果有余数也不能整除，页数+1
        //可以整除，页数=数据总条/pageSize
        pageTotal = userPostTotalCounts/pager.getPageSize();
        if(userPostTotalCounts%pager.getPageSize()>0){
            pageTotal = pageTotal + 1;
        }
        return pageTotal;
    }

    /**
     * 根据用户id查询当前用户关注的用户分页数据
     * 装载数据
     */
    public Response getFoUserListMapperDataByUserId(Pager pager){
        //调用封装的好方法进行数据装载
        PagerData pagerData = new PagerData();
        pagerData.setData(getFoUserListMapperByUserId(pager));
        pagerData.setPageTotal(getFoUserListMapperPageTotalByUserId(pager));
        return  new Response(200,"加载数据成功",pagerData);
    }

    /****************************************************************
     * 根据用户id查询其粉丝的用户分页数据
     */
    private List<UserInfo> getFansUserListMapperByUserId(Pager pager){
        Integer currentPage = pager.getCurrentPage();
        Integer startIndex = (currentPage-1)*pager.getPageSize();
        pager.setStartIndex(startIndex);
        return iFansDAL.getFansUserListMapperByUserId(pager);
    }

    /**
     * 根据用户id查询其粉丝的用户分页数据counts
     */
    private Integer getFansUserListMapperCountsByUserId(Pager pager){
        return iFansDAL.getFansUserListMapperCountsByUserId(pager);
    }

    /**
     * 根据用户id查询其粉丝的用户分页数据
     * 计算分页
     */
    private Integer getFansUserListMapperPageTotalByUserId(Pager pager){
        Integer userPostTotalCounts = getFansUserListMapperCountsByUserId(pager);
        Integer pageTotal = 1;
        //数据总条数除以pageSize，如果有余数也不能整除，页数+1
        //可以整除，页数=数据总条/pageSize
        pageTotal = userPostTotalCounts/pager.getPageSize();
        if(userPostTotalCounts%pager.getPageSize()>0){
            pageTotal = pageTotal + 1;
        }
        return pageTotal;
    }

    /**
     * 根据用户id查询其粉丝的用户分页数据
     * 装载数据
     */
    public Response getFansUserListMapperDataByUserId(Pager pager){
        //调用封装的好方法进行数据装载
        PagerData pagerData = new PagerData();
        pagerData.setData(getFansUserListMapperByUserId(pager));
        pagerData.setPageTotal(getFansUserListMapperPageTotalByUserId(pager));
        return  new Response(200,"加载数据成功",pagerData);
    }

    /*****************************************************************
     * 已经认证的粉丝用户列表分页数据
     */
    private List<UserInfo> getAuthFansUserListMapperByUserId(Pager pager){
        Integer currentPage = pager.getCurrentPage();
        Integer startIndex = (currentPage-1)*pager.getPageSize();
        pager.setStartIndex(startIndex);
        return  iFansDAL.getAuthFansUserListMapperByUserId(pager);
    }

    /**
     * 已经认证的粉丝用户列表
     * 数据总数
     */
    private Integer getAuthFansUserListMapperCountsByUserId(Pager pager){
        return iFansDAL.getAuthFansUserListMapperCountsByUserId(pager);
    }

    /**
     * 已经认证的粉丝用户列表counts
     * 计算分页
     */
    private Integer getAuthFansUserListMapperPageTotalByUserId(Pager pager){
        Integer userPostTotalCounts = getAuthFansUserListMapperCountsByUserId(pager);
        Integer pageTotal = 1;
        //数据总条数除以pageSize，如果有余数也不能整除，页数+1
        //可以整除，页数=数据总条/pageSize
        pageTotal = userPostTotalCounts/pager.getPageSize();
        if(userPostTotalCounts%pager.getPageSize()>0){
            pageTotal = pageTotal + 1;
        }
        return pageTotal;
    }

    /**
     * 已经认证的粉丝用户列表分页数据
     * 装载数据
     */
    public Response getAuthFansUserListMapperDataByUserId(Pager pager){
        //调用封装的好方法进行数据装载
        PagerData pagerData = new PagerData();
        pagerData.setData(getAuthFansUserListMapperByUserId(pager));
        pagerData.setPageTotal(getAuthFansUserListMapperPageTotalByUserId(pager));
        return  new Response(200,"加载数据成功",pagerData);
    }

    /*******************************************************************
     * 你认识的人：他关注的人，你也关注了
     * 通过用户id查询你认识的人
     * 参数：需要你要查询用户的id和当前用户id
     */
    private List<UserInfo> getYouKnowFoUserListMapperByUserId(Pager pager){
        Integer currentPage = pager.getCurrentPage();
        Integer startIndex = (currentPage-1)*pager.getPageSize();
        pager.setStartIndex(startIndex);
        return iFansDAL.getYouKnowFoUserListMapperByUserId(pager);
    }

    /**
     * 你认识的人：他关注的人，你也关注了
     * 通过用户id查询你认识的人 数据总数
     * 参数：需要你要查询用户的id和当前用户id
     */
    private Integer getYouKnowFoUserListMapperCountsByUserId(Pager pager){
        return iFansDAL.getYouKnowFoUserListMapperCountsByUserId(pager);
    }

    /**
     * 你认识的人：他关注的人，你也关注了
     * 通过用户id查询你认识的人 数据总数
     * 参数：需要你要查询用户的id和当前用户id
     * 计算分页
     */
    private Integer getYouKnowFoUserListMapperPageTotalByUserId(Pager pager){
        Integer userPostTotalCounts = getYouKnowFoUserListMapperCountsByUserId(pager);
        Integer pageTotal = 1;
        //数据总条数除以pageSize，如果有余数也不能整除，页数+1
        //可以整除，页数=数据总条/pageSize
        pageTotal = userPostTotalCounts/pager.getPageSize();
        if(userPostTotalCounts%pager.getPageSize()>0){
            pageTotal = pageTotal + 1;
        }
        return pageTotal;
    }

    /**
     * 你认识的人：他关注的人，你也关注了
     * 通过用户id查询你认识的人 数据总数
     * 参数：需要你要查询用户的id和当前用户id
     * 装载数据
     */
    public Response getYouKnowFoUserListMapperDataByUserId(Pager pager){
        //调用封装的好方法进行数据装载
        PagerData pagerData = new PagerData();
        pagerData.setData(getYouKnowFoUserListMapperByUserId(pager));
        pagerData.setPageTotal(getYouKnowFoUserListMapperPageTotalByUserId(pager));
        return  new Response(200,"加载数据成功",pagerData);
    }
}
